package demo.letcode.top100;

public class _611有效的三角形个数 {
    public static void main(String[] args) {
        /**
         * 给定一个包含非负整数的数组 nums ，返回其中可以组成三角形三条边的三元组个数。
         *
         * 示例 1:
         * 输入: nums = [2,2,3,4]
         * 输出: 3
         * 解释:有效的组合是:
         * 2,3,4 (使用第一个 2)
         * 2,3,4 (使用第二个 2)
         * 2,2,3
         *
         * 示例 2:
         * 输入: nums = [4,2,3,4]
         * 输出: 4
         *
         */

        int[] arr = {2, 2, 3, 4, 5};
        for (int i = 0; i < arr.length; i++) {
            if (i > 0 && arr[i] == arr[i - 1]) {// 跳过重复
                continue;
            }
            int k = i + 2;
            for (int j = i + 1; j < arr.length; j++) {
                if (j > i + 1 && arr[j] == arr[j - 1]) continue;// 跳过重复
                while (k < arr.length && arr[k] < arr[i] + arr[j]) {
                    k++;
                }
                // 输出j+1到k-1组合
                for (int m = j + 1; m < arr.length; m++) {
                    System.out.println("i=" + i + ",j=" + j + ",m=" + m + ",i=" + arr[i] + ",j=" + arr[j] + ",m=" + arr[m]);
                }
            }
        }
    }
}
